﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LunoCode.World
{
    public abstract class Animation
    { }

    public class BulletFlight : Animation
    {
        public int From, To;
        public BulletFlight(int From, int To)
        {
            this.From = From;
            this.To = To;
        }
    }

    public class DuelLunohodeHit : Animation
    {
        public DuelLunohode Target;
        public int Damage;
        public DuelLunohodeHit(DuelLunohode Target, int Damage)
        {
            this.Target = Target;
            this.Damage = Damage;
        }
    }

    public class DuelLunohodeStartingMove : Animation
    {
        public DuelLunohode Maker;
        public int Energy;
        public DuelLunohodeStartingMove(DuelLunohode Maker, int Energy)
        {
            this.Maker = Maker;
            this.Energy = Energy;
        }
    }

    public class DuelLunohodeSuperStrike : Animation
    {
        public DuelLunohode Target, Maker;
        public DuelLunohodeSuperStrike(DuelLunohode Maker, DuelLunohode Target)
        {
            this.Maker = Maker;
            this.Target = Target;
        }
    }

    public class DuelLunohodeBlocking : Animation
    {
        public DuelLunohode Target;
        public DuelLunohodeBlocking(DuelLunohode Target)
        {
            this.Target = Target;
        }
    }

    public class DuelLunohodeDriving : Animation
    {
        public DuelLunohode Maker;
        public int To;
        public DuelLunohodeDriving(DuelLunohode Maker, int To)
        {
            this.Maker = Maker;
            this.To = To;
        }
    }

    public class DuelLunohodeSkippingMove : Animation
    {
        public DuelLunohode Maker;
        public DuelLunohodeSkippingMove(DuelLunohode Maker)
        {
            this.Maker = Maker;
        }
    }

    public class DuelLunohodeSurrendering : Animation
    {
        public DuelLunohode Maker;
        public DuelLunohodeSurrendering(DuelLunohode Maker)
        {
            this.Maker = Maker;
        }
    }

    public class WorldError : Animation
    {
        LunError Error;
        public WorldError(LunError Error)
        {
            this.Error = Error;
        }
    }



    public class GameStarting : Animation
    {
        DuelLunohode Starter;
        public GameStarting(DuelLunohode Starter)
        {
            this.Starter = Starter;
        }
    }

    public class EndingGame : Animation
    {
        DuelLunohode Winner;
        public EndingGame(DuelLunohode Winner)
        {
            this.Winner = Winner;
        }
    }

    public class Damaging : Animation
    {
        DuelLunohode Target;
        int Damage;
        public Damaging(DuelLunohode Target, int Damage)
        {
            this.Target = Target;
            this.Damage = Damage;
        }
    }

    public class EnergySpending : Animation
    {
        DuelLunohode Maker;
        int Energy;
        public EnergySpending(DuelLunohode Maker, int Energy)
        {
            this.Maker = Maker;
            this.Energy = Energy;
        }
    }

    public enum LunError
    {
        NotEnoughEnergy, AlreadyBlocked, EnemyTooFar, NoPlaceAhead
    }

    public enum LunAction
    {
        SkipMove, Surrender, Block, Fire, SuperStrike, Drive, AnimationEnd, GameStart
    }

    class Interaction
    {
    }
}
